package com.tedu.api.thread;

/**
 * 线程：单线程【main主线程】、多线程、创建两个线程以上同时处理一件事情【并发】
 * 多线程并发
 * 多人聊天室   Version 2   多个人在同一个服务器中聊天
 * <p>
 * 多线程案例：
 * Kitchen厨房类-- 两个厨子==两个线程----炒菜
 * Chef   厨子类---每个厨子使用厨房炒不同的菜系【并发】
 */
public class Kitchen {
    public static void main(String[] args) {
        //创建线程--直接lambda表达式【没有并发】【并发---实现Runnable】
        Thread chef1 = new Thread(new Chef("风味茄子"));
        Thread chef2 = new Thread(new Chef("小渔村"));
        Thread chef3 = new Thread(new Chef("火锅"));
        chef1.start();
        chef2.start();
        chef3.start();
    }
}

//1.创建厨子类：每个厨子能各司其职--线程：Runnable接口【项目：建议结构合理】
class Chef implements Runnable {
    //私有属性
    private String dishName;  //私有属性

    //传入构造器：通过构造器确定是，那位厨子炒什么菜--并发确定哪位厨子
    public Chef(String dn) {
        //私有菜系
        this.dishName = dn;
    }

    @Override
    public void run() {
        System.out.println("开始准备：" + dishName);
        //准备时间：1~3秒---Random随机数类-->Math数学类
        /**
         * Math.random():生产随机数，范围0.0~1.0之间的浮点数【不包括1.0】
         * Math.random()*3000，生产随机数：范围0.0~3000.0之间的浮点数【不包括3000.0】
         * 转换成0~2999的整数      012     123
         * 范围：  1000~3999    随机数：1 2 3
         */
        try {
            Thread.sleep((long) (Math.random() * 3000) + 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("准备完毕"+dishName+"请开吃");
    }
    //3.实现厨子功能：1~3s中随机炒熟一道菜

}